package cn.iocoder.yudao.module.system.dal.mysql.a_article;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.system.controller.admin.a_article.vo.ArticlePageReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.a_article.ArticleDO;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface ArticleMapper extends BaseMapperX<ArticleDO> {

    /**
     * 分页查询
     * @param pageVO 查询参数
     * @return 返回列表
     */
    default PageResult<ArticleDO> page(ArticlePageReqVO pageVO){
        LambdaQueryWrapperX<ArticleDO> wrapperX = new LambdaQueryWrapperX<ArticleDO>()
                .likeIfPresent(ArticleDO::getTitle, pageVO.getTitle())         // 模糊查询标题
                .likeIfPresent(ArticleDO::getContent, pageVO.getContent())     // 模糊查询内容
                .likeIfPresent(ArticleDO::getCategory, pageVO.getCategory())   // 模糊查询类型
                .eqIfPresent(ArticleDO::getIsShare, pageVO.getIsShare());       // 是否为共享素材库（0不是、1是）
        if(pageVO.getOnlyMe()){
            wrapperX.eq(ArticleDO::getCreator, String.valueOf(SecurityFrameworkUtils.getLoginUserId()));
        }
        wrapperX.orderByDesc(ArticleDO::getCreateTime);                          // 按创建时间降序排序
        return selectPage(pageVO,wrapperX);
    }
}
